1. Field of the Invention
The present invention relates, in general, to computer networks. More particularly, this invention relates to a method and system for automatically and dynamically configuring one or more prospective participant nodes as participants in a peer-to-peer network to enable to the prospective participant nodes to engage in peer-to-peer communication with other participant nodes. This invention is particularly useful for automatically and dynamically configuring one or more prospective wireless-participant nodes as participants in a peer-to-peer network to enable the prospective wireless-participant nodes to engage in peer-to-peer communication with other participant nodes, wireless or otherwise.
2. Description of Related Art
Local Area Networks (LANs) allow users of the LANs to exchange information between interconnected or communicatively coupled computers, commonly referred to as stations or nodes. LANs beneficially allow the members to exchange files, data, voice traffic and other information. Additionally, LANs permit users of one LAN node to share resources of another LAN node, including other interconnected or communicatively coupled peripheral-type devices, such as printers, cameras, and data storage. Depending on the needs of the user, the architecture, topology, and transmission media of the LANs may vary.
One common type of LAN architecture is the client/server architecture in which each node and/or process on the network is either a client or a server. Servers are generally powerful computers that are dedicated to managing the network resources, and may take a variety of forms such as file servers, print servers, and/or network servers. Clients, on the other hand, run user applications, which may request one or more of the network resources from the one or more servers coupled to the network. For instance, when database mining for some desired information, not only may a client request from a network drive a file that hopefully contains the desired information, but the client may also request that the database server run macros (i.e., special-purpose command language code within the application) to locate a specific value or field in the database.
Another type of LAN architecture is a peer-to-peer or “ad hoc” architecture LAN (peer-to-peer LAN). Distinguishing the architecture of the peer-to-peer LAN from client/server architecture LAN are the rules and responsibilities of each of its nodes. Unlike the hierarchical nature or “master/slave” relationship between the nodes in client/server architecture LAN, each node in a peer-to-peer LAN typically has equivalent responsibilities and generally has the same capabilities. Consequently, peer-to-peer architecture is generally simpler than client/server architecture.
Configuring nodes to engage in peer-to-peer communication in a peer-to-peer LAN, however, can be difficult since there is no node in the peer-to-peer LAN having a central repository of configuration information similar to the configuration information managed by the server and supplied to the client in a client/server architecture LAN. This difficulty may become more evident when large distances separate one node from another and configuration information for the peer-to-peer network cannot be directly communicated between the nodes. Further, given that peer-to-peer networks may be established using wireless and/or wired transmission media, and given that there are many different transmission technologies for these media, managing the configuration information for the different media and transmission technologies becomes even more daunting when the configuration information cannot be directly communicated between the nodes.
As with most types of LANs, a peer-to-peer LAN operates according to one or more established protocols. Generally, in one form or another, each of the protocols defines one or more protocol layers, which collectively define a protocol stack. Each layer of the protocol stack exists to perform a specific function, such as addressing, routing, framing and physical transmission for a communication. During a communication session, portions (e.g., packets) of the communication may be transmitted from a source node (e.g., a first peer-to-peer LAN participant node) to a target node (e.g., a second peer-to-peer LAN participant node) passing downward through layers of the source node's protocol stack, and upward through corresponding layers of the target node's protocol stack.
Each layer of the protocol stack in the transmitting process may provide information to the corresponding layer in a receiving process. Typically, the layers at the top of a protocol stack are designed to provide end-to-end communication between source and destination node. For instance, the top layers may provide packet-sequence information and encryption. Lower layers of the stack generally provide information to facilitate communication between nodes in the network. As an example, the lower layers in the stack may provide network address information for use in routing packets through the network to the appropriate node.
A variety of packet-data communication protocols are known. For instance, there are the Open System Interconnection (OSI) 7 layer model, TCP/IP protocol suite (TCP/IP suite), Novell's SPX/IPX protocol, Apple Computer's Appletalk protocol, Microsoft's NetBEUI protocol, and IEEE 802 family of protocols, to name a few. For purposes of illustration, the communication protocol referenced hereinafter is based the exemplary TCP/IP suite, which is used to manage transmission of packet-data or “packets” throughout the Internet and other IP networks. It is to be understood, however, that other protocols or standards could also be used.
The TCP/IP protocol stack includes, from lowest to highest, a data-link layer, a network or “IP” layer, a transport layer and an application layer. The data-link layer includes protocols and services that apply to network-interface-card drivers that allow a node to connect to the physical network. The IP layer provides addressing information to facilitate independent routing of packets within or between networks. In addition, the IP layer includes control layers.
The transport layer allows source and target nodes to carry on a communication with each other. To facilitate such communication, the transport layer may include a connection-oriented Transmission Control Protocol (TCP) layer and/or a connectionless User Datagram Protocol (UDP) layer. While the UDP layer may not technically belong to the TCP/IP suite, its services are commonly described in conjunction with the TCP layer and TCP/IP suite for convenience. Finally, the application layer includes application programs that carry out the functionality of a node and carry out interfacing with a user.
Generally, to communicate with a target node, the source node, at a minimum, needs to know the address of the target node. In the TCP/IP suite, this address is the Internet Protocol address (IP) address. In an IP network, every node of the network uses a unique IP address, which may be either statically or dynamically assigned. In the client/server architecture, a Dynamic Host Configuration Protocol (DHCP) server running on an enterprise server or router automatically assigns IP addresses to client nodes joining a client/server TCP/IP network, and recovers formerly assigned addresses once a client leaves the network. The DHCP application eliminates manually assigned permanent (i.e., static) IP addresses in the client/server architecture LAN, and it therefore allows the client/server architecture LAN to preserve the number of IP addresses, which are inherently limited.
IP addresses are written as four sets of numbers separated by periods, such as 207.1.2.5. TCP/IP addresses use 32 bits for specifying the IP address. These 32 bits may be made up of a network and host address (commonly referred to a “net_id” and “host_id”). The more bits used for network address, the fewer remain for hosts. Certain high-order bits identify class types (e.g. Class A, B, C, and D) and some numbers are reserved. Because of the explosion in the amount of needed net_ids and host_ids, Class C addresses have been expanded using the Classless Inter-Domain Routing method (CIDR), which uses a variable network ID instead of the fixed numbers in the other classes.
Network addressing may be further expanded using a subnetwork (subnet). This is typically done to separate one network from another to improve performance and security. To subdivide the network and create additional addresses, a subnet mask may be used. The subnet mask is used to filter or pass communications to a particular network segment and a particular node. The subnet mask is a binary pattern that is stored in the node. During a communication, the address appended to a packet is compared to the IP address of the node to determine whether to accept or reject the packet.
As noted above, in the TCP/IP suite, the IP-protocol-stack layer provides addressing information to facilitate routing of packets between layers. The IP protocol prepares the packets for the data-link layer by translating the IP addresses into physical station addresses, commonly referred to as MAC addresses or Ethernet addresses. Generally, the IP protocol uses the Address Resolution Protocol (ARP) translation mechanism to obtain the MAC address. Alternatively, the IP protocol may use a predefined configuration file that contains the addresses. Once prepared, the IP protocol supplies to the data link layer one or more datagrams having the MAC address of the target node. After receiving these datagrams, the data-link layer forwards them to the physical layer and then off to the target node.
In the application layer of the TCP/IP suite, a program on one node that desires to communicate with another node does so through a socket. Generally, the socket is a combination of the IP address and the program's port. If the IP address is only known by a server name, the server name may be resolved using a Domain Name System (DNS) server, or in the case of a Windows network using TCP/IP, a Windows Internet Naming System (WINS) server. A port is a logical number assigned to every program. These numbers are assigned to common programs using an agreed upon number known as “well-known ports.” In a LAN, the ports assigned to programs are permitted to be arbitrary so long as the well-known ports are not used.
When setting up a LAN, or adding another node to an existing LAN, many of the address parameters are set manually and maintained by a network administrator or some other equivalent. As noted above, the IP address of each node must be unique, otherwise confusion results regarding which node should receive a communication, or more specifically an addressed packet of information. In client/server architecture, the DHCP server may be used to assign and keep track of IP addresses, so that (i) no two nodes have the same address and (ii) incoming packets are directed to the appropriate node. In a peer-to-peer LAN architecture, however, generally no such server exists since each node typically has equivalent responsibilities and generally the same capabilities.
Today, wireless access devices, such as IEEE 802.11 protocol wireless-communication cards (802.11 network interface cards), may be used to connect to a LAN built according to either client/server or peer-to-peer architecture. Many of the 802.11 cards may be operated in one of several various modes. Included among these various modes are an “infrastructure” mode and “ad hoc” or peer-to-peer mode.
In the infrastructure mode, the “802.11-capable node”, which may be referred to as a “station” in IEEE 802.11 parlance, communicates with an access point. The access point performs server-type functions including registering (i.e., authenticating and associating) the station with the network. In the peer-to-peer mode, however, such server-type functionality does not exist. Consequently, the peer-to-peer network's configuration information, which contains network configuration parameters for addressing and registering stations joining an established peer-to-peer LAN or creating a peer-to-peer LAN, are generally set and maintained manually.
Therefore, to provide the peer-to-peer network's configuration information to one or more prospective (i.e., not yet configured) nodes, what is needed is a method and system for automatically and dynamically configuring such nodes in an peer-to-peer LAN. Further, what is needed is a method and system that automatically and dynamically configures the nodes in peer-to-peer LAN without exchanging a large number of parameters, and which can be accomplished in a secure manner, if desired.